/*
** my_ls.c for my_ls in /home/chassa_m/rendu/PSU_2013_my_ls
** 
** Made by chassa_m
** Login   <chassa_m@epitech.net>
** 
** Started on  Mon Nov 25 14:34:54 2013 chassa_m
** Last update Fri Nov 29 09:56:22 2013 chassa_m
*/

#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

void		my_Roption(char *path)
{
  DIR		*diropen = opendir(path);
  struct dirent	*dirread;
  char		newdir[512];

  if ((diropen = opendir(path)) == NULL)
    exit(write(2, "Unable to access to directory.\n", 31));
  my_printf("%s%c\n", path, ':');
  while ((dirread = readdir(diropen)))
    if (strncmp(dirread->d_name, ".", 1))
      {
	my_printf("%s  ", dirread->d_name);
	my_putchar('\n');
      }
  closedir(diropen);
  diropen = opendir(path);
  while ((dirread = readdir(diropen)))
    {
      if (dirread->d_name[0] != '.')
	if (dirread->d_type == 4)
	  {
	    sprintf(newdir, "%s/%s", path, dirread->d_name);
	    my_putchar('\n');
	    my_Roption(newdir);
	  }
    }
  closedir(diropen);
}

int	main(int ac, char **av)
{
  my_Roption(av[1]);
  return (0);
}

/* Faut juste changer les fonctions interdites sprintf && strncmp par des fonctions que l'on a fait nous-mêmes et on passe à 90%, après y'a un bug bizarre ou des fois il n'affiche pas de dossiers, c'est quand tu faisais opendir et readdir la toute première fois si tu te souviens bien dans ton premier code. */

/* EDIT : il semblerait que la fonction n'affiche pas le (dernier/premier) fichier/dossier quand il en affiche, en gros : quand y'a rien ça marche, quand y'a des fichiers/dossiers la fonction en affiche le tout, -1... FU. */
